import os

def __test(x):
    return os.path.isfile(x) or os.path.isdir(x)

def find_file(fname: str) -> str:
    '''查找文件或目录
    @return 找到的配置文件的绝对路径或None
    '''
    # 如果 fname 是 绝对路径，直接返回
    if __test(fname):
        return os.path.abspath(fname)
    # 从工作目录下取
    f = os.path.join(os.getcwd(), fname)
    if __test(f):
        return f
    # 从项目中取
    wd = os.path.dirname(__file__)
    while True:
        f = os.path.join(wd, fname)
        if __test(f):
            return f
        if wd == '/':
            break
        wd = os.path.dirname(wd)
